/* 
入口文件
1. 连接数据库
2. 创建并启动服务
  注册各种中间件 => 路由器/静态资源/解析body参数/cors跨域的
  启动服务
*/

// 用立即执行函数 连接数据库
(async () => {
  const connect = require('./db/connect')
  const express = require('express')
  const setCORS = require('./middlerwares/setCORS')
  const loginRouter = require('./routers/loginRouter')
  const userRouter = require('./routers/userRouter')
  const verifyToken = require('./middlerwares/verifyToken')

  // 连接数据库
  await connect()

  const app = express()

  // 使用各种中间件
  // 引入cors  用代理服务器 如何解决跨域
  // app.use(setCORS)

  // 静态资源
  app.use(express.static('public'))


  // 解析body参数
  app.use(express.json())
  app.use(express.urlencoded({ extended: false }))


  // 路由器
  app.use('/admin',loginRouter)
  app.use('/admin', verifyToken, userRouter)
  // app.use([path],callback) 可以是多个回调函数(中间件函数)  
  // 这两种方式 用了第二种之后 在userRouter页面就可以不引入verifyToken中间件函数


  app.listen(8081, () => {
    // 连接成功后, 启动服务
    console.log('准备启动服务 http://localhost:8081')
  })

})()


